package hsrt.vis;

import java.util.ArrayList;

/**
 * DataSection Daten Container für die Daten die auf der Kugel dargestellt werden sollen
 * @author tlauria
 *
 */
public class DataSection {
	private int maxColVal = 65536;
	private ArrayList <DataSubSection> data = new ArrayList<DataSubSection>();
	private int maxValueSum = 0;
	private int label;
	private class DataSubSection {
		public int value = 0;
		public int maxValue = 0;
		public int[] color = new int[3];
	}
	public DataSection (int label) {
		this.label = label;
	}
	/**
	 * Beispiel: 55% => value: 55 maxValue: 100
	 * Beispiel: 33 von 42 möglichen Kartoffeln => value: 33 maxValue: 42
	 * @param value
	 * @param maxValue
	 */
	public DataSection (int label, int value, int maxValue) {
		this.label = label;
		addData(value, maxValue);
	}
	/**
	 * Farbe direkt setzen
	 * @param value
	 * @param color
	 */
	public DataSection (int label, int value, int[] color) {
		this.label = label;		
		addData(value, color);
	}
	/**
	 * Beispiel: 55% => value: 55 maxValue: 100
	 * Beispiel: 33 von 42 möglichen Kartoffeln => value: 33 maxValue: 42
	 * @param value
	 * @param maxValue
	 */
	public void addData(int value, int maxValue){
		DataSubSection d;
		d = new DataSubSection();
		d.value = value;
		d.maxValue = maxValue;
		maxValueSum += maxValue;
		
		d.color[1] = (int) (d.value * maxColVal / d.maxValue);
		d.color[0] = maxColVal - d.color[1];
		d.color[2] = 0;
		data.add(d);
	}
	/**
	 * Farbe direkt setzen
	 * @param value
	 * @param color
	 */
	public void addData(int value, int[] color){
		DataSubSection d;
		d = new DataSubSection();
		d.value = d.maxValue = value;
		maxValueSum += value;
		d.color = color;
		data.add(d);
	}
	/**
	 * Anzahl der sub sections
	 * @return
	 */
	public int getCount () {
		return data.size();
	}
	/**
	 * Anzahl der sub sections
	 * @return
	 */
	public int getLabel () {
		return label;
	}	
	/**
	 * Erstmal nur ein Dingens zurückgeben, ohne lati auswertung
	 * @return
	 */
	public int[] getColor (int j, int lati) {
		int valueSum = 0;
		int i;
		for (i = 0;i < data.size(); i++) {
			valueSum += data.get(i).value;
			if(((float)j / (float)lati) < ((float)valueSum / (float)maxValueSum)){
				return data.get(i).color;
			}
		}
		return data.get(data.size()-1).color;
	}
}